Micron Document
πŸŽ–οΈGitΠ―Ρ€Π°πŸŽ–οΈ

Node / meshtastic / Meshtastic-Android / files / docs / en / developer / contributing.md

Displaying Rendered β€’ View raw β€’ Download

docs/en/developer/contributing.md fix/qr-error-correction (7b45f84f) Text, 3.27 KB

title: Contributing
parent: Developer Guide
nav_order: 8
last_updated: 2026-07-08
aliases:
β€’ contributing
β€’ pull-request
β€’ branch-naming

Contributing

Guidelines for contributing to the Meshtastic Android/Desktop project (a KMP codebase that also compiles for iOS).

Branch Naming

Branches use conventional-commit style prefixes:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Prefix β”‚ Use for β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ T383838feat/<scope> β”‚ New user-visible behavior β”‚
β”‚ T383838fix/<scope> β”‚ Bug fixes β”‚
β”‚ T383838refactor/<scope> β”‚ Code structure changes β”‚
β”‚ T383838chore/<scope> β”‚ Tooling, deps, CI, cleanup β”‚
β”‚ T383838docs/<scope> β”‚ Documentation only β”‚
β”‚ T383838build/<scope> β”‚ Build system changes β”‚
β”‚ T383838ci/<scope> β”‚ CI workflow changes β”‚
β”‚ T383838test/<scope> β”‚ Test additions or fixes β”‚
β”‚ T383838deps/<scope> β”‚ Dependency updates β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Timestamp-based spec prefixes (T383838YYYYMMDD-HHMMSS-feature-name, as created by T383838/speckit.git.feature) are also valid for spec-driven work.

Examples:
β€’ T383838feat/desktop-ble-transport
β€’ T383838fix/bluetooth-reconnect
β€’ T38383820260601-074653-air-quality-telemetry

Development Workflow

1. Fork the repository (external contributors) or create a branch (maintainers).
2. Implement your changes following the architecture guidelines.
3. Test locally: T383838./gradlew spotlessCheck detekt kmpSmokeCompile test allTests
4. Commit with clear, descriptive messages.
5. Push and open a Pull Request.

Commit Messages

Follow conventional commit style:
T282828
feat(docs): add in-app documentation browser
fix(ble): handle reconnection timeout
refactor(navigation): migrate to typed routes
test(search): add keyword ranking tests

Pull Request Checklist

Before submitting:
β€’ [ ] Code compiles on all targets: T383838./gradlew kmpSmokeCompile
β€’ [ ] All tests pass: T383838./gradlew allTests
β€’ [ ] Code style passes: T383838./gradlew spotlessCheck
β€’ [ ] Static analysis passes: T383838./gradlew detekt
β€’ [ ] New code has appropriate test coverage
β€’ [ ] No T383838android.* imports in T383838commonMain
β€’ [ ] Koin modules registered if new DI is added
β€’ [ ] Routes added to T383838Routes.kt if new navigation is introduced
β€’ [ ] Documentation updated if user-facing behavior changes

Code Style

β€’ Formatting: Enforced by Spotless (KtLint rules)
β€’ Static analysis: Detekt with project-specific configuration
β€’ Imports: No wildcard imports; organized automatically by Spotless
β€’ Line length: 120 characters maximum

Run formatting:
T282828
./gradlew spotlessApply

Architecture Rules

β€’ Feature modules must not depend on other feature modules
β€’ T383838commonMain must not contain T383838android.*, T383838java.io.*, or platform-specific imports
β€’ Prefer interface + DI over T383838expect/T383838actual for complex platform behaviors
β€’ All navigation routes must be T383838@Serializable and defined in T383838Routes.kt
β€’ Use Koin annotations (T383838@Single, T383838@Factory, T383838@Module) for dependency injection

Verification

Full pre-merge verification:
T282828
./gradlew spotlessCheck detekt kmpSmokeCompile Tffa657test allTests


For docs-specific changes, also run:
T282828
./gradlew generateDocsBundle validateDocsBundle

Getting Help

β€’ Meshtastic Discord β€” T383838#app-development channel
β€’ GitHub Issues β€” for bug reports and feature requests
β€’ GitHub Discussions β€” for questions and ideas


Served by rngit 1.5.0 - Generated in 0.07s